package com.bosssoft.cloud.wechat.core.api;

/**
 * JS-SDK使用权限签名服务
 * <p>
 * 注：
 * 获取的access_token和jsapi_ticket，有效期都为7200秒
 * 所以若有更改redis中缓存信息有效期的需求，请确保时限在7200s以内
 *
 * @author wcy create on 2021/6/23 15:03 下午
 */
public interface SignatureService {
    /**
     * 获取access_token
     * 该token主要在获取权限签名时，用于获得jsapi_ticket
     *
     * @return access_token
     */
    String getAccessToken();

    /**
     * 根据appid和appsecret，获取access_token
     *
     * @param appid  appid
     * @param secret appSecret
     * @return access_token
     */
    String getAccessToken(String appid, String secret);

    /**
     * 获取jsapi_ticket
     * 该ticket主要在获取权限签名时，用于与timestamp,noncestr,url一起生成签名signature
     *
     * @return jsapi_ticket
     */
    String getTicket();

    /**
     * 根据access_token获取jsapi_ticket
     *
     * @param accessToken access_token
     * @return jsapi_ticket
     */
    String getTicket(String accessToken);

    /**
     * 获取前端调用JS-SDK时，所需的权限签名
     *
     * @param timestamp 时间戳
     * @param noncestr  随机字符串
     * @param url       授权的url
     * @return 权限签名
     */
    String getSignature(String timestamp, String noncestr, String url);

}
